#ifndef KASISKI_H_
#define KASISKI_H_

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;

struct ocurrencia {
	int frecuencia;
	vector<char> descripcion;
};

class Kasiski {

private:
	vector<ocurrencia>* ocurrenciasEncontradas;
	vector<char>* alfabeto;
	string pathEntrada;
	string pathDiccionario;
	void construirAlfabeto();

public:
	Kasiski(string pathEntrada, string pathDiccionario);
	vector<ocurrencia> ataqueKasiski();
	vector<ocurrencia> getPalabrasDelDiccionario();
	vector<ocurrencia> busquedaPalabraEnDiccionarioPorLongitud(vector<char> palabraCripograma);
	vector<ocurrencia> descifrarClave(vector<ocurrencia> palabraDiccionario, vector<char> palabraCriptograma);
	virtual ~Kasiski();
};

#endif /* KASISKI_H_ */
